<?php

require_once '..' . DS . '/DAO/Conexao.php';
require_once 'BeanSaida.php';
require_once 'BeanTipoSaida.php';
require_once 'BeanVinculo.php';
require_once 'BeanMembro.php';
require_once 'BeanTesoureiro.php';
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Description of ModelSaida
 *
 * @author David
 */
class ModelSaida {

    public $p = null;

    public function ModelSaida() {
        $this->p = Conexao::Intancia()->Db();
    }

    //GETS

    /**
     * Retorna todas as saídas do mês
     * @param type $mes
     * @param type $ano
     * @return \BeanSaida
     */
    public function getSaida($mes, $ano) {
        $sql = "SELECT 
                    a.sai_id,
                    date_format(a.sai_data, '%d/%m/%Y %H:%i') as sai_data,
                    a.sai_valor,
                    a.sai_descricao,
                    b.tsai_id,
                    b.tsai_descricao,
                    b.tsai_imagem,
                    d.mem_nome
                FROM saida a
                INNER JOIN tipo_saida b ON a.fk_tsai_id = b.tsai_id
                INNER JOIN tesoureiro c ON a.fk_tes_id = c.tes_id
                INNER JOIN membro d ON c.fk_mem_id = d.mem_id
                WHERE MONTH(a.sai_data) = ? AND YEAR(a.sai_data) = ?;";

        $stmt = $this->p->prepare($sql);
        $stmt->bindValue(1, $mes);
        $stmt->bindValue(2, $ano);
        $res = $stmt->execute();

        $resultado = [];
        if ($res != 1) {
            $resultado = "erro";
        } else {
            while ($linha = $stmt->fetch()) {
                $beanSaida = new BeanSaida();
                $beanSaida->codigo = $linha["sai_id"];
                $beanSaida->data = $linha["sai_data"];
                $beanSaida->valor = $linha["sai_valor"];
                $beanSaida->descricao = $linha["sai_descricao"];

                $beanTipoSaida = new BeanTipoSaida();
                $beanTipoSaida->codigo = $linha["tsai_id"];
                $beanTipoSaida->descricao = $linha["tsai_descricao"];
                $beanTipoSaida->imagem = $linha["tsai_imagem"];

                $beanSaida->beanTipoSaida = $beanTipoSaida;

                $beanMembro = new BeanMembro();
                $beanMembro->nome = $linha["mem_nome"];

                $beanTesoureiro = new BeanTesoureiro();
                $beanTesoureiro->beanMembro = $beanMembro;

                $beanSaida->beanTesoureiro = $beanTesoureiro;

                $resultado[] = $beanSaida;
            }
        }
        return $resultado;
    }

    // SETS

    /**
     * Insere saída no banco de dados
     * @param type $tesoureiro
     * @param type $tipo
     * @param type $valor
     * @return string
     */
    public function setSaida($tesoureiro, $tipo, $valor, $descricao) {
        $sql = "INSERT INTO saida 
                    (fk_tes_id, fk_tsai_id, sai_valor, sai_data, sai_descricao) 
                VALUES (
                    (SELECT max(tes_id) FROM tesoureiro WHERE fk_mem_id = ?),?,?, NOW(),?);";

        $stmt = $this->p->prepare($sql);
        $stmt->bindValue(1, $tesoureiro);
        $stmt->bindValue(2, $tipo);
        $stmt->bindValue(3, $valor);
        $stmt->bindValue(4, $descricao);
        $res = $stmt->execute();

        $resultado = array();
        if ($res != 1) {
            $resultado = "erro";
        }
        return $resultado;
    }

    /**
     * Atualiza saída no banco de dados
     * @param type $codigo
     * @param type $tipo
     * @param type $valor
     * @return string
     */
    public function setUpdateSaida($codigo, $tipo, $valor, $descricao) {
        $sql = "UPDATE saida 
                    set fk_tsai_id = ?,
                        sai_valor = ?,
                        sai_descricao = ?
                WHERE sai_id = ?;";
        
        $stmt = $this->p->prepare($sql);
        $stmt->bindValue(1, $tipo);
        $stmt->bindValue(2, $valor);
        $stmt->bindValue(3, $descricao);
        $stmt->bindValue(4, $codigo);
        $res = $stmt->execute();

        $resultado = "";
        if ($res != 1) {
            $resultado = "erro";
        }
        return $resultado;
    }

    /**
     * Exclui saida do banco de dados 
     * @param type $codigo
     * @return string
     */
    public function setDeleteSaida($codigo) {
        $sql = "DELETE FROM saida WHERE sai_id = ?;";

        $stmt = $this->p->prepare($sql);
        $stmt->bindValue(1, $codigo);
        $res = $stmt->execute();

        $resultado = array();
        if ($res != 1) {
            $resultado = "erro";
        }
        return $resultado;
    }

}